package dancetwotiktokenumsmysql

const (
	DanceElementPubilbType  = 0
	DanceElementPrivateType = 1
	DanceElementNoneType    = 2

	DanceElementTypeClothing = 1
	DanceElementTypeProps    = 2
	DanceElementTypeTool     = 3
	//DanceElementTypePetClothing = 4

	//工具类型
	DanceElementTypeToolTitle = 1 //称号
	DanceElementTypeToolIcon  = 2 //头像框
	//DanceElementTypeToolSingleP         = 4   //单人分数背景板
	//DanceElementTypeToolCoupleP         = 3   //组队分数背景板
	DanceElementTypeToolPersonalCard        = 5   //个人信息卡
	DanceElementTypeToolEffectCards         = 6   //特效卡
	DanceElementTypeSinglePersonVehicle     = 101 //单人载具
	DanceElementTypeDoublePersonVehicle     = 102 //双人载具
	DanceElementTypeEntranceFloatingScreen  = 103 //入场飘屏
	DanceElementTypeGiftFloatingScreen      = 104 //礼物飘屏
	DanceElementTypeLuckyDrawFloatingScreen = 105 //抽奖飘屏

	// 散件
	DanceElementPartHair  = 1 //头发
	DanceElementPartFace  = 2 // 脸
	DanceElementPartUpper = 5 // 上半身
	DanceElementPartLower = 6 // 下半身fa
	DanceElementPartShoes = 8 // 鞋子
	//挂件
	DanceElementPartLHand       = 11 // 左手持
	DanceElementPartRHand       = 12 // 右手持
	DanceElementPartHead        = 14 // 头顶
	DanceElementPartBack        = 15 // 翅膀
	DanceElementPartTurnedCards = 16 // 幻化卡
	//组合
	DanceElementPartSuitHF            = 21  // 组合 - 头发 + 脸
	DanceElementPartSuitHFJ           = 22  // 组合 - 头发 + 脸 + 上身
	DanceElementPartSuitHFJP          = 23  // 组合 - 头发 + 脸 + 上身 + 下身
	DanceElementPartSuitHFJPS         = 24  // 组合 - 头发 + 脸 + 上身 + 下身 + 鞋
	DanceElementPartSuitHJ            = 25  // 组合 - 头发 + 上身
	DanceElementPartSuitHJP           = 26  // 组合 - 头发 + 上身 + 下身
	DanceElementPartSuitHJPS          = 27  // 组合 - 头发 + 上身 + 下身 + 鞋
	DanceElementPartSuitJP            = 28  // 组合 - 上身 + 下身
	DanceElementPartSuitJPS           = 29  // 组合 - 上身 + 下身 + 鞋
	DanceElementPartSuitPS            = 30  // 组合 - 下身 + 鞋
	DanceElementPartPelvisLocal       = 41  // 腰附加
	DanceElementPartSpine1Local       = 42  // 胸附加
	DanceElementPartRootLocal         = 43  // 脚底附加
	DanceElementPartPelvisWorld       = 51  // 腰挂载
	DanceElementPartSpine1World       = 52  // 胸挂载
	DanceElementPartRootWorld         = 53  // 脚底挂载
	DanceElementPartHalo              = 90  // 光环
	DanceElementPartSpecialEffectWing = 315 // 特效翅膀
	DanceElementPartSpecialEffectHalo = 390 // 特效光环

	//道具
	DanceElementPartRedPacket = 1 // 福卡

	//宠物时装
	DanceElementPetClothingHalo   = 90
	DanceElementPetClothingPelvis = 51
	DanceElementPetClothingWing   = 15

	//挂件
	DanceElementPartPresentLHand = 100 // 送礼出现的 额外挂载 左手持
	DanceElementPartPresentRHand = 200 // 送礼出现的 额外挂载 右手持
	DanceElementPartPresentHead  = 300 // 送礼出现的 额外挂载 头顶
	DanceElementPartPresentBack  = 400 // 送礼出现的 额外挂载 背后 Max }

	DanceElementSexMan    = 0 //Man
	DanceElementSexWoman  = 1 //Woman
	DanceElementSexCommon = 2 //通用
)

type DanceElementEnums struct {
}

var DanceElementEnumsObject DanceElementEnums

func (e DanceElementEnums) Tags() []int {
	return []int{
		DanceElementPubilbType,
		DanceElementPrivateType,
		DanceElementNoneType,
	}
}

func (e DanceElementEnums) TagsMap() map[int]string {
	m := make(map[int]string)
	for _, s := range e.Tags() {
		m[s] = e.TagsString(s)
	}
	return m
}

func (e DanceElementEnums) TagsString(tag int) string {
	switch tag {
	case DanceElementPubilbType:
		return "公有"
	case DanceElementPrivateType:
		return "私有"
	case DanceElementNoneType:
		return "特殊"
	default:
		return "公有"
	}
}

func (e DanceElementEnums) PetClothingTwo() []int {
	return []int{
		DanceElementPetClothingHalo,
		DanceElementPetClothingPelvis,
		DanceElementPetClothingWing,
	}
}

func (e DanceElementEnums) PetClothingMap() map[int]string {
	m := make(map[int]string)
	for _, s := range e.PetClothingTwo() {
		m[s] = e.PetClothingString(s)
	}
	return m
}

func (e DanceElementEnums) PetClothingString(tag int) string {
	switch tag {
	case DanceElementPetClothingHalo:
		return "宠物光环"
	case DanceElementPetClothingPelvis:
		return "宠物腰挂载"
	case DanceElementPetClothingWing:
		return "宠物翅膀"
	default:
		return "宠物光环"
	}
}

func (e DanceElementEnums) PartTwo() []int {
	return []int{
		DanceElementPartRedPacket,
	}
}

func (e DanceElementEnums) PartTwoMap() map[int]string {
	m := make(map[int]string)
	for _, s := range e.PartTwo() {
		m[s] = e.PartTwoString(s)
	}
	return m
}

func (e DanceElementEnums) PartTwoString(tag int) string {
	switch tag {
	case DanceElementPartRedPacket:
		return "福卡"
	default:
		return "福卡"
	}
}

func (e DanceElementEnums) Part() []int {
	return []int{
		DanceElementPartHair,
		DanceElementPartFace,
		DanceElementPartUpper,
		DanceElementPartLower,
		DanceElementPartShoes,
		DanceElementPartLHand,
		DanceElementPartRHand,
		DanceElementPartHead,
		DanceElementPartBack,
		DanceElementPartSuitHF,
		DanceElementPartSuitHFJ,
		DanceElementPartSuitHFJP,
		DanceElementPartSuitHFJPS,
		DanceElementPartSuitHJ,
		DanceElementPartSuitHJP,
		DanceElementPartSuitHJPS,
		DanceElementPartSuitJP,
		DanceElementPartSuitJPS,
		DanceElementPartSuitPS,
		DanceElementPartPelvisLocal,
		DanceElementPartSpine1Local,
		DanceElementPartRootLocal,
		DanceElementPartPelvisWorld,
		DanceElementPartSpine1World,
		DanceElementPartRootWorld,
		DanceElementPartHalo,
		DanceElementPartPresentLHand,
		DanceElementPartPresentRHand,
		DanceElementPartPresentHead,
		DanceElementPartPresentBack,
		DanceElementPartTurnedCards,
		DanceElementPartSpecialEffectWing,
		DanceElementPartSpecialEffectHalo,
	}
}

func (e DanceElementEnums) PartMap() map[int]string {
	m := make(map[int]string)
	for _, s := range e.Part() {
		m[s] = e.PartString(s)
	}
	return m
}

func (e DanceElementEnums) PartString(tag int) string {
	switch tag {
	case DanceElementPartHair:
		return "头发"
	case DanceElementPartFace:
		return "脸"
	case DanceElementPartUpper:
		return "上半身"
	case DanceElementPartLower:
		return "下半身"
	case DanceElementPartShoes:
		return "鞋子"
	case DanceElementPartLHand:
		return "左手持"
	case DanceElementPartRHand:
		return "右手持"
	case DanceElementPartHead:
		return "头顶"
	case DanceElementPartBack:
		return "翅膀"
	case DanceElementPartSuitHF:
		return "头发+脸"
	case DanceElementPartSuitHFJ:
		return "头发+脸+上身"
	case DanceElementPartSuitHFJP:
		return "头发+脸+上身+下身"
	case DanceElementPartSuitHFJPS:
		return "头发+脸+上身+下身+鞋"
	case DanceElementPartSuitHJ:
		return "头发+上身"
	case DanceElementPartSuitHJP:
		return "头发+上身+下身"
	case DanceElementPartSuitHJPS:
		return "头发+上身+下身+鞋"
	case DanceElementPartSuitJP:
		return "上身+下身"
	case DanceElementPartSuitJPS:
		return "上身+下身+鞋"
	case DanceElementPartSuitPS:
		return "下身+鞋"
	case DanceElementPartPelvisLocal:
		return "腰附加"
	case DanceElementPartSpine1Local:
		return "胸附加"
	case DanceElementPartRootLocal:
		return "脚底附加"
	case DanceElementPartPelvisWorld:
		return "腰挂载"
	case DanceElementPartSpine1World:
		return "胸挂载"
	case DanceElementPartRootWorld:
		return "脚底挂载"
	case DanceElementPartHalo:
		return "光环"
	case DanceElementPartPresentLHand:
		return "额外挂载 左手持"
	case DanceElementPartPresentRHand:
		return "额外挂载 右手持"
	case DanceElementPartPresentHead:
		return "额外挂载 头顶"
	case DanceElementPartPresentBack:
		return "额外挂载 背后"
	case DanceElementPartTurnedCards:
		return "幻化卡"
	case DanceElementPartSpecialEffectWing:
		return "特效翅膀"
	case DanceElementPartSpecialEffectHalo:
		return "特效光环"
	default:
		return "公有"
	}
}

func (e DanceElementEnums) ElementType() []int {
	return []int{
		DanceElementTypeClothing,
		DanceElementTypeProps,
		DanceElementTypeTool,
		//DanceElementTypePetClothing,
	}
}

func (e DanceElementEnums) ElementMap() map[int]string {
	m := make(map[int]string)
	for _, s := range e.ElementType() {
		m[s] = e.ElementString(s)
	}
	return m
}

func (e DanceElementEnums) ElementString(tag int) string {
	switch tag {
	case DanceElementTypeClothing:
		return "服饰"
	case DanceElementTypeProps:
		return "道具"
	case DanceElementTypeTool:
		return "功能道具"
	//case DanceElementTypePetClothing:
	//	return "宠物时装"
	default:
		return "其他"
	}
}

func (e DanceElementEnums) ElementTool() []int {
	return []int{
		DanceElementTypeToolTitle,
		DanceElementTypeToolIcon,
		//DanceElementTypeToolSingleP,
		//DanceElementTypeToolCoupleP,
		DanceElementTypeToolPersonalCard,
		DanceElementTypeToolEffectCards,
		DanceElementTypeSinglePersonVehicle,
		DanceElementTypeDoublePersonVehicle,
		DanceElementTypeEntranceFloatingScreen,
		DanceElementTypeGiftFloatingScreen,
		DanceElementTypeLuckyDrawFloatingScreen,
	}
}

func (e DanceElementEnums) ElementToolMap() map[int]string {
	m := make(map[int]string)
	for _, s := range e.ElementTool() {
		m[s] = e.ElementToolString(s)
	}
	return m
}

func (e DanceElementEnums) ElementToolString(tag int) string {
	switch tag {
	case DanceElementTypeToolTitle:
		return "称号"
	case DanceElementTypeToolIcon:
		return "头像框"
	//case DanceElementTypeToolSingleP:
	//	return "单人分数背景板"
	//case DanceElementTypeToolCoupleP:
	//	return "组队分数背景板"
	case DanceElementTypeToolPersonalCard:
		return "个人信息卡"
	case DanceElementTypeToolEffectCards:
		return "特效卡"
	case DanceElementTypeSinglePersonVehicle:
		return "单人载具"
	case DanceElementTypeDoublePersonVehicle:
		return "双人载具"
	case DanceElementTypeEntranceFloatingScreen:
		return "入场飘屏"
	case DanceElementTypeGiftFloatingScreen:
		return "礼物飘屏"
	case DanceElementTypeLuckyDrawFloatingScreen:
		return "抽奖飘屏"

	default:
		return "其他"
	}
}

func (e DanceElementEnums) ElementSex() []int {
	return []int{
		DanceElementSexMan,
		DanceElementSexWoman,
		DanceElementSexCommon,
	}
}

func (e DanceElementEnums) ElementSexMap() map[int]string {
	m := make(map[int]string)
	for _, s := range e.ElementSex() {
		m[s] = e.ElementSexString(s)
	}
	return m
}

func (e DanceElementEnums) ElementSexString(tag int) string {
	switch tag {
	case DanceElementSexMan:
		return "男"
	case DanceElementSexWoman:
		return "女"
	case DanceElementSexCommon:
		return "通用"
	default:
		return "其他"
	}
}
